package cn.b.sky.mes.andon.service;

import java.util.List;

import cn.b.sky.mes.andon.model.Andon;
import cn.b.sky.mes.andon.model.condition.AndonCondition;
import cn.b.sky.common.model.BatchJobReport;

/**
 * 
 * <strong>Title : AndonService.java<br></strong>
 * <strong>Package : cn.b.sky.mes.andon.service<br></strong>
 * <strong>Description : </strong>按灯站点服务接口<br> 
 * <strong>Create on : 2016年10月14日 下午1:15:18<br></strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人|修改日期|修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface AndonService {
  /**
   * 
   * <strong>Title : getAndonListByCondition<br></strong>
   * <strong>Description : </strong>根据条件查按灯列表<br> 
   * <strong>Create on : 2016年10月14日 下午1:19:22<br></strong>
   * <p>
   * @param condition
   * @return
   * List<Andon>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Andon> getAndonListByCondition(AndonCondition condition);

  /**
   * 
   * <strong>Title : getAndonCountByCondition<br></strong>
   * <strong>Description : </strong>获取按灯列表总数<br> 
   * <strong>Create on : 2016年10月14日 下午1:19:59<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getAndonCountByCondition(AndonCondition condition);

  /**
   * 
   * <strong>Title : insertAndon<br></strong>
   * <strong>Description : </strong>保存按灯数据<br> 
   * <strong>Create on : 2016年10月14日 下午1:21:38<br></strong>
   * <p>
   * @param andon
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertAndon(Andon andon);

  /**
   * 
   * <strong>Title : updateAndon<br></strong>
   * <strong>Description : </strong>更新按灯数据<br> 
   * <strong>Create on : 2016年10月14日 下午3:46:50<br></strong>
   * <p>
   * @param andon
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateAndon(Andon andon);

  /**
   * 
   * <strong>Title : batchUpdateAndons<br></strong>
   * <strong>Description : </strong>批量更新按灯数据<br> 
   * <strong>Create on : 2016年10月14日 下午1:21:55<br></strong>
   * <p>
   * @param andons
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void batchUpdateAndons(List<Andon> andons);

  /**
   * 
   * <strong>Title : getAndonByCode<br></strong>
   * <strong>Description : </strong>根据按灯编号获取按灯数据<br> 
   * <strong>Create on : 2016年10月14日 下午1:24:37<br></strong>
   * <p>
   * @param siteCode
   * @param workUnitCode
   * @param andonCode
   * @return
   * Andon
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Andon getAndonByCode(String siteCode, String workUnitCode, String andonCode);

  /**
   * 
   * <strong>Title : deleteAndon<br></strong>
   * <strong>Description : </strong>根据按灯编号删除按灯数据<br> 
   * <strong>Create on : 2016年10月14日 下午1:24:58<br></strong>
   * <p>
   * @param siteCode
   * @param workUnitCode
   * @param andonCode
   * @return
   * BatchJobReport
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport deleteAndon(String siteCode, String workUnitCode, String andonCode);

  /**
   * 
   * <strong>Title : doCopyAndon<br></strong>
   * <strong>Description : </strong>复制ANDON数据（不包含ANDON组数据）<br> 
   * <strong>Create on : 2016年10月20日 下午3:35:38<br></strong>
   * <p>
   * @param andon
   * @return
   * BatchJobReport
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport doCopyAndon(Andon andon);

  /**
   * 
   * <strong>Title : doMoveAndon<br></strong>
   * <strong>Description : </strong>移动ANDON数据<br> 
   * <strong>Create on : 2016年10月20日 下午3:40:34<br></strong>
   * <p>
   * @param andon
   * @return
   * BatchJobReport
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  BatchJobReport doMoveAndon(Andon andon);
  /**
   * 
   * <strong>Title : getAllAndonsByAndonType<br></strong>
   * <strong>Description : </strong>获取此安灯类型下的所有安灯<br> 
   * <strong>Create on : 2016-11-3 下午2:25:11<br></strong>
   * <p>
   * @param siteCode
   * @param workUnitCode
   * @param andonType
   * @return
   * List<Andon>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Andon> getAllAndonsByAndonType(String siteCode, String workUnitCode, String andonType);

  /**
   * 
   * <strong>Title : getRunningAndonCount<br></strong>
   * <strong>Description : 获取正在运行中的安灯数量</strong><br> 
   * <strong>Create on : 2016-11-9 上午10:10:23<br></strong>
   * <p>
   * @param siteCode
   * @param workUnitCode
   * @param andonTypeCode
   * @return
   * Integer
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Integer getRunningAndonCount(String siteCode, String workUnitCode, String andonTypeCode);
}
